/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ch.easer.zlv.entity;

import ch.easer.zlv.entity.enums.Waehrung;
import ch.easer.zlv.entity.enums.Haeufigkeit;
import ch.easer.zlv.entity.enums.ZahlungsArt;
import ch.easer.framework.BaseEntity;
import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.NotNull;

/**
 *
 * @author easy
 */
@Entity
public class Zahlung extends BaseEntity {
              
    @NotNull
    private String empfaenger;
    
    @NotNull
    private Double betrag;
       
    @Enumerated(EnumType.STRING)
    private Waehrung waehrung;
       
    @Enumerated(EnumType.STRING)
    private Haeufigkeit haeufigkeit;
    
    @Enumerated(EnumType.STRING)
    private ZahlungsArt zahlungsArt;
      
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date datumErsteAusfuehrung;

    
    @Transient
    private Double betragMonat;
    @Transient
    private Double betragJahr;
    @Transient
    private Double betragTag;

    
    
    public Zahlung() {
    }

    public Zahlung(String empfaenger, Double betrag) {
        this.empfaenger = empfaenger;
        this.betrag = betrag;
    }

    public ZahlungsArt getZahlungsArt() {
        return zahlungsArt;
    }

    public void setZahlungsArt(ZahlungsArt zahlungsArt) {
        this.zahlungsArt = zahlungsArt;
    }
    
    public String getEmpfaenger() {
        return empfaenger;
    }

    public void setEmpfaenger(String empfaenger) {
        this.empfaenger = empfaenger;
    }

    public Double getBetrag() {
        return betrag;
    }

    public void setBetrag(Double value) {
        this.betrag = value;
    }

    public Double getBetragJahr() {
        
        return betragJahr = getHaeufigkeit().getJahresFaktor() * getBetrag();
    }

    public Double getBetragMonat() {
        return betragJahr = getBetragJahr()/12;
    }
    
    public Double getBetragTag() {
        return betragJahr = getBetragJahr()/365;
    }
    public Haeufigkeit getHaeufigkeit() {
        return haeufigkeit;
    }

    public void setHaeufigkeit(Haeufigkeit haeufigkeit) {
        this.haeufigkeit = haeufigkeit;
    }

    public Waehrung getWaehrung() {
        return waehrung;
    }

    public void setWaehrung(Waehrung waehrung) {
        this.waehrung = waehrung;
    }
    
    public Date getDatumErsteAusfuehrung() {
        return datumErsteAusfuehrung;
    }

    public void setDatumErsteAusfuehrung(Date datumErsteAusfuehrung) {
        this.datumErsteAusfuehrung = datumErsteAusfuehrung;
    }
}
